//深拷贝会新开辟空间从而拷贝完全
let obj = {
  id: 1,
  name: 'andy',
  msg: {
    age: 19,
    color: ['pink', 'blue', 321]
  },
  color: ['pink', 'blue', 321]
}
let o = {};
//封装函数
function deepCopy(newObj, oldObj) {
  for (const k in oldObj) {
    //判断属性值属于那种数据类型
    let item = oldObj[k];
    //1.判断是否是数组
    if (item instanceof Array) { //数组也属于Object 所以要往上写
      newObj[k] = [];
      deepCopy(newObj[k], item); //继续递归拷贝

    }
    //2.判断是否是对象
    else if (item instanceof Object) {
      newObj[k] = {};
      deepCopy(newObj[k], item);
    }
    //3.属于简单数据类型
    else {
      newObj[k] = item;
    }
  }
}
deepCopy(o, obj)
console.log(o);